Skip to content

Add support for Maryland (24), Indiana (25), Kentucky (26), Rhode Island (27)#103

Open
chuff wants to merge 25 commits into
IABTechLab:masterfrom
chuff:add-md-in-ky-ri
Open

Add support for Maryland (24), Indiana (25), Kentucky (26), Rhode Island (27)#103
chuff wants to merge 25 commits into
IABTechLab:masterfrom
chuff:add-md-in-ky-ri

Conversation

@chuff

@chuff chuff commented Jun 6, 2026

Copy link
Copy Markdown
Contributor

Summary

Implements four new MSPA state sections per the latest GPP MSPA spec:

  • US-MD Maryland (Section ID 24)
  • US-IN Indiana (Section ID 25)
  • US-KY Kentucky (Section ID 26)
  • US-RI Rhode Island (Section ID 27)

Each section follows the same pattern as the existing US-MN section: a Core + GPC segment pair, registered in `Sections.java` and dispatched from `GppModel` for encode/decode, with per-state fields, segments, and a section class.

Test plan

  • `mvn test` passes (388 tests)
  • `GppModelTest.testEncodeDefaultAll` exercises all four new sections in the consolidated GPP string
  • Per-section round-trip tests added under `com.iab.gpp.encoder.section`

yuzawa-san and others added 25 commits June 16, 2025 19:47
* make jdk's consistent

* force javadoc check in CI build
* initial multi state implementation

* multi state

* unit tests

* exposing id based methods in GppModel

* personal data consents fix, reduce multi state subsection id (IABTechLab#10)

Co-authored-by: chad <chad@totalium.com>

* 3.0.0 (IABTechLab#11)

* personal data consents fix, reduce multi state subsection id

* scm

* [maven-release-plugin] prepare release iabgpp-core-3.0.0

* scm

* scm

* scm

* scm

* 3.0.0

* 3.0.1-SNAPSHOT

Co-authored-by: chad <chad@totalium.com>

* fix multi state name, add unit tests (IABTechLab#13)

* personal data consents fix, reduce multi state subsection id

* scm

* [maven-release-plugin] prepare release iabgpp-core-3.0.0

* scm

* scm

* scm

* scm

* 3.0.0

* 3.0.1-SNAPSHOT

* fix section names and add unit tests

Co-authored-by: chad <chad@totalium.com>

* 3.0.1 (IABTechLab#14)

* personal data consents fix, reduce multi state subsection id

* scm

* [maven-release-plugin] prepare release iabgpp-core-3.0.0

* scm

* scm

* scm

* scm

* 3.0.0

* 3.0.1-SNAPSHOT

* fix section names and add unit tests

* 3.0.1

* 3.1.0-SNAPSHOT

* cleanup

* fix groupId in README

* fix groupId in README

* fix groupId in README

Co-authored-by: chad <chad@totalium.com>

* Convenience Methods (IABTechLab#15)

* personal data consents fix, reduce multi state subsection id

* scm

* [maven-release-plugin] prepare release iabgpp-core-3.0.0

* scm

* scm

* scm

* scm

* 3.0.0

* 3.0.1-SNAPSHOT

* fix section names and add unit tests

* 3.0.1

* 3.1.0-SNAPSHOT

* cleanup

* fix groupId in README

* fix groupId in README

* fix groupId in README

* convenience methods

* 3.0.2

* 3.1.0-SNAPSHOT

Co-authored-by: chad <chad@totalium.com>

* full list of fields to readme (IABTechLab#16)

* personal data consents fix, reduce multi state subsection id

* scm

* [maven-release-plugin] prepare release iabgpp-core-3.0.0

* scm

* scm

* scm

* scm

* 3.0.0

* 3.0.1-SNAPSHOT

* fix section names and add unit tests

* 3.0.1

* 3.1.0-SNAPSHOT

* cleanup

* fix groupId in README

* fix groupId in README

* fix groupId in README

* convenience methods

* 3.0.2

* 3.1.0-SNAPSHOT

* full list of fields to readme

* rename array to list in readme

Co-authored-by: chad <chad@totalium.com>

* tcfeuv2 backwards compatible (IABTechLab#19)

* Exception handling

* compressed base64urlencoder for all non-tcfeuv2 segments

* Revert uspv1 to original encoding

* Rename tcfcav2 to tcfcav1

* update readme for tcfcav2 -> tcfcav1 and uspv1 changes

* optional gpc segments

* update readme with GpcSegmentIncluded fields

* fix vendor list encoding / decoding

* formatting

* 3.0.3

* version bump

Co-authored-by: chad <chad@totalium.com>

* Update dependencies. Fix bitfield cast. (IABTechLab#20)

* Exception handling

* compressed base64urlencoder for all non-tcfeuv2 segments

* Revert uspv1 to original encoding

* Rename tcfcav2 to tcfcav1

* update readme for tcfcav2 -> tcfcav1 and uspv1 changes

* optional gpc segments

* update readme with GpcSegmentIncluded fields

* fix vendor list encoding / decoding

* formatting

* 3.0.3

* version bump

* fix bitfield data type

* update jackson version

* update junit

* 3.0.4

* 3.0.5-SNAPSHOT

* 3.0.5

* 3.0.6-SNAPSHOT

* 3.0.6

* 3.0.7-SNAPSHOT

* 3.0.7

* 3.0.8-SNAPSHOT

Co-authored-by: chad <chad@totalium.com>

* Dedupe and sort lists. Added InvalidFieldError. (IABTechLab#24)

* fix optimized fix range decoder

* fix optimized fibonacci fix range decoder

* 3.0.8

* 3.0.9-SNAPSHOT

* 3.0.9

* 3.0.10-SNAPSHOT

* dedup and sort lists

* formatting

* 3.0.10

* 3.0.11-SNAPSHOT

* 3.0.12-SNAPSHOT

* 3.0.11-SNAPSHOT

* 3.0.10

* 3.0.11-SNAPSHOT

* 3.0.10

* 3.0.11-SNAPSHOT

* cleanup

Co-authored-by: chad <chad@totalium.com>

* issue 26: wrong version number for TcfCaV1 (IABTechLab#27)

Co-authored-by: Guofang Li <guofang.li@thetradedesk.com>

* Removes duplicate section in the GppModel.decodeSection if tree as UspV1 was in the list twice. (IABTechLab#30)

* Updating GVL code as V3 and adding some comments (IABTechLab#32)

* IABTechLab#29
IABTechLab#26

* Removes duplicate section in the GppModel.decodeSection

* Rename multistate usp* to us*

* fix tcfcav1 policy version

* vendor list 2.2

* lazy decoding

* cleanup lazy decoding

* Updating GVL code as V3 and adding some comments; also removing GPPModel LazyDecoding feature; also keeping the TCF policy version as 2 for Canada.

* 3.1.0

* 3.1.1-SNAPSHOT

---------

Co-authored-by: chad <chad@totalium.com>
Co-authored-by: srini81 <srinivas.bhagavatula@yahooinc.com>

* rename missed multistate usp* methods to us* (IABTechLab#35)

Co-authored-by: chad <chad@totalium.com>

* Adding a new field in Vendor for "impConsPurposes" as the GVL for Canada has changed to include this field in the place of "legIntPurposes". (IABTechLab#37)

Both these fields will be set to Optional in order to handle both Canada and EU use cases.

Co-authored-by: srini81 <srinivas.bhagavatula@yahooinc.com>

* 3.1.1

* 3.1.2-SNAPSHOT

* Version Bump (IABTechLab#38)

* 3.1.1

* 3.1.2-SNAPSHOT

---------

Co-authored-by: chad <chad@totalium.com>

* lazy decoding (IABTechLab#34)

* lazy decoding

* java 8 compatible gppmodel tests

* rename missed multistate usp* methods to us*

* lazier decoding

* lazier decoding

* tests for null and empty string constructor arguments

* deprecate multi-state usp* methods

* remove deprecated usp methods

* encodeSection lazy fix

* optimize bitstring padding

---------

Co-authored-by: chad <chad@totalium.com>

* Update README.md (IABTechLab#46)

Fix incorrect client-side API prefixes.

https://github.com/InteractiveAdvertisingBureau/Global-Privacy-Platform/blob/main/Sections/Section%20Information.md is the authority.

* Validation (IABTechLab#36)

* lazy decoding

* java 8 compatible gppmodel tests

* rename missed multistate usp* methods to us*

* lazier decoding

* lazier decoding

* tests for null and empty string constructor arguments

* validation

* fix typo

* remove redundant validate call

* default validate

* remove empty validate method from header core segment

* fix usct validator

* deprecate multi-state usp* methods

* remove deprecated usp methods

* cleanup validators

* encodeSection lazy fix

---------

Co-authored-by: chad <chad@totalium.com>

* tcfca pub restrictions and disclosed vendors (IABTechLab#39)

* rename missed multistate usp* methods to us*

* 3.1.1

* 3.1.2-SNAPSHOT

* tcfca publisher restrictions and disclosed vendors

* deprecate multi-state usp* methods

* substring error handling

* remove deprecated usp methods

* Update README

* tcfeu pub restrictions fix

* pub restrictions getters

* tcfeu pub restirctions fix

* cleanup

* pub restrictions fix

---------

Co-authored-by: chad <chad@totalium.com>

* 3.2.0

* 3.2.1-SNAPSHOT

* Versioning (IABTechLab#47)

* 3.1.1

* 3.1.2-SNAPSHOT

* 3.2.0

* 3.2.1-SNAPSHOT

---------

Co-authored-by: chad <chad@totalium.com>

* Remove multistate version (IABTechLab#60)

* lazy decoding

* java 8 compatible gppmodel tests

* rename missed multistate usp* methods to us*

* lazier decoding

* lazier decoding

* tests for null and empty string constructor arguments

* validation

* fix typo

* remove redundant validate call

* default validate

* remove empty validate method from header core segment

* fix usct validator

* 3.1.1

* 3.1.2-SNAPSHOT

* tcfca publisher restrictions and disclosed vendors

* deprecate multi-state usp* methods

* substring error handling

* remove deprecated usp methods

* remove deprecated usp methods

* remove deprecated usp methods

* cleanup validators

* Better decoding exception messaging

* remove unused classes

* Update README

* add support for the old headerless tcfeuv2 strings

* encodeSection fix

* encodeSection lazy fix

* tcfeu pub restrictions fix

* pub restrictions getters

* tcfeu pub restirctions fix

* cleanup

* pub restrictions fix

* optimize bitstring padding

* 3.2.0

* 3.2.1-SNAPSHOT

* fl mt or tx

* remove version from multistate resources

---------

Co-authored-by: chad <chad@totalium.com>

* Post release version bump (IABTechLab#64)

* 3.2.1

* 3.2.2-SNAPSHOT

---------

Co-authored-by: Chad Huff <chad@totalium.com>

* 3.2.2

* 3.2.3-SNAPSHOT

* Tx fl or mt (IABTechLab#57)

* lazy decoding

* java 8 compatible gppmodel tests

* rename missed multistate usp* methods to us*

* lazier decoding

* lazier decoding

* tests for null and empty string constructor arguments

* validation

* fix typo

* remove redundant validate call

* default validate

* remove empty validate method from header core segment

* fix usct validator

* 3.1.1

* 3.1.2-SNAPSHOT

* tcfca publisher restrictions and disclosed vendors

* deprecate multi-state usp* methods

* substring error handling

* remove deprecated usp methods

* remove deprecated usp methods

* remove deprecated usp methods

* cleanup validators

* Better decoding exception messaging

* remove unused classes

* Update README

* add support for the old headerless tcfeuv2 strings

* encodeSection fix

* encodeSection lazy fix

* tcfeu pub restrictions fix

* pub restrictions getters

* tcfeu pub restirctions fix

* cleanup

* pub restrictions fix

* optimize bitstring padding

* 3.2.0

* 3.2.1-SNAPSHOT

* fl mt or tx

---------

Co-authored-by: chad <chad@totalium.com>

* Update AbstractLazilyEncodableSection.java (IABTechLab#61)

* DE IA NE NH NJ TN MSPA USNAT (IABTechLab#65)

* DE IA NE NH NJ TN

* remove validation

* usnat backwards compatibility

---------

Co-authored-by: Chad Huff <chad@totalium.com>

* remove validation (IABTechLab#66)

* remove validation

* fix lazy decoding in decodeSection

---------

Co-authored-by: Chad Huff <chad@totalium.com>

* 3.2.3

* 3.2.4-SNAPSHOT

* Added GitHub Actions workflow file for iabgpp-java version release

* Fail if gpp string doesnt start with DB

* fix merge conflict

---------

Co-authored-by: Mayank Mishra <mayank@iabtechlab.com>
Co-authored-by: chad <chad@totalium.com>
Co-authored-by: Guofang Li <guofang.li@live.com>
Co-authored-by: Guofang Li <guofang.li@thetradedesk.com>
Co-authored-by: Bryan DeLong <ananon@gmail.com>
Co-authored-by: srini81 <srinivas.bhagavatula@yahooinc.com>
Co-authored-by: Srinivas Bhagavatula <srini.cancerian@gmail.com>
Co-authored-by: Daniël Hoeksema <37441336+danielsao@users.noreply.github.com>
Co-authored-by: iabsxhxl <sahil.kukreja@aitglobalinc.com>
Co-authored-by: naveenjr7 <cnaveenchidambaram@gmail.com>
Co-authored-by: aitsxhxl <111370634+aitsxhxl@users.noreply.github.com>
Co-authored-by: Chad Huff <chad@totalium.com>
* Minnesota

* Fix section references

* Fix MN datatypes

---------

Co-authored-by: Chad Huff <chad@totalium.com>
Implements the Maryland Online Data Privacy Act section per the
GPP spec, following the existing UsMn pattern. Core + GPC segments,
9 core fields (MspaVersion, MspaCoveredTransaction, MspaMode,
ProcessingNotice, SaleOptOutNotice, TargetedAdvertisingOptOutNotice,
SaleOptOut, TargetedAdvertisingOptOut, AdditionalDataProcessingConsent),
no SensitiveDataProcessing / KnownChildSensitiveDataConsents per spec.
Implements the Indiana Consumer Data Protection Act section per the
GPP spec, following the UsMn pattern. Core + GPC segments, 11 core
fields including SensitiveDataProcessing (8-element N-Bitfield) and
KnownChildSensitiveDataConsents.
# Conflicts:
#	iabgpp-encoder/src/main/java/com/iab/gpp/encoder/GppModel.java
#	iabgpp-encoder/src/main/java/com/iab/gpp/encoder/section/Sections.java
#	iabgpp-encoder/src/test/java/com/iab/gpp/encoder/GppModelTest.java
# Conflicts:
#	iabgpp-encoder/src/main/java/com/iab/gpp/encoder/GppModel.java
#	iabgpp-encoder/src/main/java/com/iab/gpp/encoder/section/Sections.java
#	iabgpp-encoder/src/test/java/com/iab/gpp/encoder/GppModelTest.java
# Conflicts:
#	iabgpp-encoder/src/main/java/com/iab/gpp/encoder/GppModel.java
#	iabgpp-encoder/src/main/java/com/iab/gpp/encoder/section/Sections.java
#	iabgpp-encoder/src/test/java/com/iab/gpp/encoder/GppModelTest.java
Per the IAB GPP MSPA spec, Indiana (25), Kentucky (26), and Rhode Island
(27) have a Sensitive Data Consents optional segment (not GPC). Move
SensitiveDataProcessing out of the core segment and into the new
UsIn/Ky/RiSensitiveDataConsentSegment, and remove the incorrectly added
GPC fields and segment files.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@chuff chuff force-pushed the add-md-in-ky-ri branch from c23f861 to 906334b Compare June 8, 2026 21:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants